package com.wing.bill.dao;


import com.wing.wcabinet.model.response.WcabCellInventoryInoutVO;
import com.wing.wcabinet.model.response.WcabCellInventorySpaceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;

@Mapper
public interface WeighCabinetReportDao {

    /**
     * 上货重量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryExhibitWeight(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("inoutType") Integer inoutType,@Param("operationType") Integer operationType);

    /**
     * 上货数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryExhibitQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("inoutType") Integer inoutType,@Param("operationType") Integer operationType);

    /**
     * 上货金额
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryExhibitMoney(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("inoutType") Integer inoutType,@Param("operationType") Integer operationType);

    /**
     * 补货重量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap querySubsidyWeight(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 补货数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap querySubsidyQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 补货金额
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap querySubsidyMoney(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 上货物料排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> exhibitRanking(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 补货物料排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> replenishmentMaterial(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 在库总重量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryInStockWeight(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 在库物料数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryInStockQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 在库总价值
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryInStockMoney(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 在库点击
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<WcabCellInventorySpaceVO> queryInStockWeightClick(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 按规格查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByOldSpecCode(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 按分类查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByCategory(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 按类型查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByType(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 按人员查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByUser(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 按部门查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByDept(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 按品牌查询物料消耗
     *
     * @param startTime
     * @param endTime
     * @param param
     * @param code
     * @return
     */
    List<HashMap> queryMaterialConsumptionByBrand(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("param") String param, @Param("code") String code);

    /**
     * 退料重量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryReturnedWeight(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 退料数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryReturnedQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 退料金额
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryReturnedMoney(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 退料次数
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryReturnedFrequency(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 按skuCode查询退货物料占比
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryReturnedMaterialBySkuCode(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 按规格查询退货物料占比
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryReturnedMaterialByOldSpecCode(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code);

    /**
     * 按人员查询退货物料排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryReturnedMaterialByUserId(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("databaseUser") String databaseUser);

    /**
     * 待盘验报修报废物料数量
     * @param code
     * @return
     */
    HashMap queryMaterialsToTestedQuantity(@Param("code") String code, @Param("businessType") Integer businessType);

    /**
     * 待盘验报修报废物料数量点击
     * @param code
     * @return
     */
    List<WcabCellInventorySpaceVO> queryMaterialsToTestedQuantityClick(@Param("code") String code, @Param("businessType") Integer businessType);

    /**
     * 已盘验报修报废物料数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryOrderedInspectionQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType);


    /**
     * 已盘验报修报废物料重量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryOrderedInspectionExceptionQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType);

    /**
     * 报修报废订单物料数量
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    HashMap queryRepairOrderQuantity(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType);

    /**
     * 按skuCode查询报修报废物料消耗排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryRepairMaterialBySkuCode(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType);

    /**
     * 按人员查询报修报废物料消耗排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryRepairMaterialByUser(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType, @Param("databaseUser") String databaseUser);

    /**
     * 按类型查询报修报废物料消耗排名
     *
     * @param startTime
     * @param endTime
     * @param code
     * @return
     */
    List<HashMap> queryRepairMaterialByProductType(@Param("start") LocalDateTime startTime, @Param("end") LocalDateTime endTime, @Param("code") String code, @Param("businessType") Integer businessType);


}
